#ifndef USUARIO_H_
#define USUARIO_H_

#include <string>
#include "../Common/Jsonizable.h"

class Usuario : public Jsonizable {
private:
	std::string nombre;
	std::string contrasena;
	unsigned maxNivelAlcanzado;
	unsigned puntaje;

public:

	//Crea un usuario sin nombre, sin contraseña, con maximo puntaje alcanzado
	//igual a cero, y con puntaje igual a cero
	Usuario();
	
	//Crea un usuario con nombre, con contraseña, con maximo puntaje alcanzado
	//igual a cero, y con puntaje igual a cero
	Usuario(const std::string& nombre, const std::string& contrasena);
	
	//Asigna un usuario
	void operator=(const Usuario& usuario);
	
	//Devuelve el nombre del usuario
	const std::string& getNombre() const;
	
	//Modifica el nombre del usuario
	void setNombre(const std::string& nombre);

	//Devuelve la contraseña del usuario
	std::string getContrasena() const;
	
	//Modifica la contraseña del usuario
	void setContrasena(const std::string& contrasena);

	//Devuelve el json con datos del usuario
	Json::Value getJson();
	
	//Modifica al usuario a partir de un json
	void setJson(Json::Value&);
	
	//Devuelve el maximo nivel alcanzado del usuario
	unsigned getMaxNivelAlcanzado() const;

	//Modifica el maximo nivel alcanzado del usuario
	void setMaxNivelAlcanzado(const unsigned& nivel);
	
	//Modifica el puntaje del usuario
	void setPuntaje(const unsigned& puntaje);
	
	//Devuelve el puntaje del usuario
	unsigned getPuntaje() const;
};

#endif /* USUARIO_H_ */
